package cn.fzm.demo01;

import com.sun.net.ssl.internal.ssl.Provider;
import sun.misc.Launcher;
import sun.security.ec.CurveDB;

import java.net.URL;

public class Demo03ClassLoader {
    public static void main(String[] args) {
        System.out.println("********* 启动类加载器 *********");
        // 获取BootStrapClassLoader能够加载的api的路径
        URL[] urLs = Launcher.getBootstrapClassPath().getURLs();

        for (URL element : urLs) {
            System.out.println(element.toExternalForm());
        }

        // 从上面路径中随意选择一个类, 来看看他的类加载器是什么
        ClassLoader classLoader = Provider.class.getClassLoader();
        // 输出null -> 推出类加载器是引导类加载器
        System.out.println(classLoader);

        System.out.println("********* 扩展类加载器 *********");
        String extDirs = System.getProperty("java.ext.dirs");
        String[] strings = extDirs.split(";");
        for (String path : strings) {
            System.out.println(path);

        }

        // 从上面路径中随意选择一个类, 来看看他的类加载器是什么
        ClassLoader classLoader1 = CurveDB.class.getClassLoader();
        // 输出: sun.misc.Launcher$ExtClassLoader@12a3a380 -> 推出类加载器是扩展类加载器
        System.out.println(classLoader1);
    }
}
